package com.ynet.middleground.approve.service;

import java.util.List;

import javax.validation.Valid;

import com.ynet.core.common.BaseReqObj;
import com.ynet.core.common.BaseReqObjPager;
import com.ynet.core.common.ServiceResult;
import com.ynet.middleground.approve.bean.AddTaskAttrReq;
import com.ynet.middleground.approve.bean.QueryTaskAttrReq;
import com.ynet.middleground.approve.bean.UpdateTaskAttrReq;
import com.ynet.middleground.approve.dto.TaskAttrDTO;

/**
 * @author liulx
 * @description 流程任务节点业务属性服务类
 * @date 2020-06-29 15:07
 */
public interface TaskAttrService {

    /**
     * 查询所有流程节点业务属性
     * 
     * @param reqObj
     *            基础请求参数
     * @return 流程任务节点业务属性列表
     */
    ServiceResult<List<TaskAttrDTO>> list(@Valid BaseReqObj reqObj);

    /**
     * 分页查询流程节点业务属性
     *
     * @param reqObj
     *            分页基础请求参数
     * @return 流程任务节点业务属性列表
     */
    ServiceResult<List<TaskAttrDTO>> listPage(@Valid BaseReqObjPager reqObj);

    /**
     * 根据 id 查询审批节点业务属性信息
     *
     * @param req
     *            查询审批节点业务属性详情请求信息
     * @return 业务属性传输对象
     */
    ServiceResult<TaskAttrDTO> getById(@Valid QueryTaskAttrReq req);

    /**
     * 根据 id 更新业务属性信息
     *
     * @param req
     *            修改审批节点业务属性请求信息
     * @return 修改成功以 success 字段为准
     */
    ServiceResult<Object> modifyById(@Valid UpdateTaskAttrReq req);

    /**
     * 新增审批节点业务属性
     *
     * @param req
     *            新增审批节点业务属性请求信息
     * @return 新增后的业务属性 id
     */
    ServiceResult<Integer> add(@Valid AddTaskAttrReq req);

    /**
     * 根据业务属性 id 删除信息
     *
     * @param req
     *            查询审批节点业务属性详情请求信息
     * @return 删除成功以 success 字段为准
     */
    ServiceResult<Object> deleteById(@Valid QueryTaskAttrReq req);

}
